package com.hank.controller;

import com.hank.dto.UserDTO;
import com.hank.holder.UserContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import static com.hank.filter.UserContextFilter.getCurrentUser;

/**
 * @author gaoZhiHao
 * @date 2023/5/5 11:38
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @GetMapping("/info")
    public String getUserInfo() {
        // 模拟从 session 中获取用户信息
        UserDTO user = new UserDTO();
        user.setName("gzh");

        // 将用户信息存入 ThreadLocal 中
        UserContextHolder.setUser(user);
        //这里只是模拟，当这个线程小时，存的信息也会消失，所以另外一起请求来获取信息是获取不到的
        return "用户信息获取成功";
    }

    @GetMapping("/business")
    public String doBusiness() {
        // 获取当前线程中的用户信息
        UserDTO user = UserContextHolder.getUser();
        if (user != null) {
            return "当前用户：" + user.getName();
        } else {
            return "尚未获取到用户信息";
        }
    }

    /*================================================什么两个请求是获取不到用户信息的==================================================*/

    @GetMapping("/businessUserInfo")
    public String doBusinessUserInfo() {
        // 获取当前线程中的用户信息
        UserDTO currentUser = getCurrentUser();
        if (currentUser != null) {
            return "当前用户：" + currentUser.getName();
        } else {
            return "尚未获取到用户信息";
        }
    }
}
